
#ifdef FLASH_CODE_HEADER

static const uint32_t flash_code_STM32F4XX_128[91] = 
{
    0XE00ABE00,0X062D780D,0X24084068,0XD3000040,0X1E644058,0X1C49D1FA,0X2A001E52,0X4770D1F2,
    0X0E000300,0XD3022820,0X1D000940,0X28104770,0X0900D302,0X47701CC0,0X47700880,0X49424843,
    0X49436041,0X68016041,0X0F090709,0X68C16001,0X431122F0,0X694060C1,0XD4060680,0X493D483E,
    0X21066001,0X493D6041,0X20006081,0X48374770,0X05426901,0X61014311,0X47702000,0X4833B510,
    0X24046901,0X61014321,0X03A26901,0X61014311,0X4A314933,0X6011E000,0X03DB68C3,0X6901D4FB,
    0X610143A1,0XBD102000,0XF7FFB530,0X4927FFB9,0X23F068CA,0X60CA431A,0X610C2402,0X06C0690A,
    0X43020E00,0X6908610A,0X431003E2,0X48246108,0XE0004A21,0X68CD6010,0XD4FB03ED,0X43A06908,
    0X68C86108,0X0F000600,0X68C8D003,0X60C84318,0XBD302001,0X4D15B570,0X08891CC9,0X008968EB,
    0X433326F0,0X230060EB,0X4B16612B,0X692CE017,0X612C431C,0X60046814,0X03E468EC,0X692CD4FC,
    0X00640864,0X68EC612C,0X0F240624,0X68E8D004,0X60E84330,0XBD702001,0X1F091D00,0X29001D12,
    0X2000D1E5,0X0000BD70,0X45670123,0X40023C00,0XCDEF89AB,0X00005555,0X40003000,0X00000FFF,
    0X0000AAAA,0X00000201,0X00000000,
};

static const program_target_t flash_algo_STM32F4XX_128 =
{
    0X2000003D,  // Init
    0X2000006F,  // UnInit
    0X2000007D,  // EraseChip
    0X200000A9,  // EraseSector
    0X200000F5,  // ProgramPage

    {
        0x20000001,  // BKPT : start of blob + 1
        0x20000C00,  // RSB  : address to access global/static data
        0x20001000,  // RSP  : stack pointer 
    },

    0x20000400,                      // mem buffer location
    0x20000000,                      // location to write prog_blob in target RAM
    sizeof(flash_code_STM32F4XX_128),       // prog_blob size
    flash_code_STM32F4XX_128,               // address of prog_blob 
    0x00000400,                      // ram_to_flash_bytes_to_be_written
};

#endif

#ifdef FLASH_CODE_TABLE
&flash_algo_STM32F4XX_128
#endif

